package cn.yyh.basic.mapper;

import cn.yyh.org.query.BaseQuery;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * BaseMapper公共代码CRUD,分页,高级查询抽取
 *
 * @author 杨永航
 * @version 1.0
 * @Title: BaseMapper
 * @Package: cn.yyh.basic.mapper
 * @date 2021/6/24
 */
@Repository
public interface BaseMapper<T> {
    /**
     * 添加部门
     *
     * @param t 封装对象
     * @version: 1.0
     * @return: void
     * @author: 杨永航
     * @date: 2021/6/23
     */
    Boolean save(T t);

    /**
     * 修改部门
     *
     * @param t 封装对象
     * @version: 1.0
     * @return: void
     * @author: 杨永航
     * @date: 2021/6/23
     */
    Boolean update(T t);

    /**
     * 删除部门
     *
     * @param id 部门id
     * @version: 1.0
     * @return: void
     * @author: 杨永航
     * @date: 2021/6/23
     */
    Boolean delete(Long id);

    /**
     * 查找所有
     *
     * @version: 1.0
     * @return: List<T>
     * @author: 杨永航
     * @date: 2021/6/23
     */
    List<T> listAll();

    /**
     * 根据id查找对应部门
     *
     * @param id 部门id
     * @version: 1.0
     * @return: T
     * @author: 杨永航
     * @date: 2021/6/23
     */
    T getById(Long id);

    /**
     * 高级查询带分页
     *
     * @param query 查询条件
     * @version: 1.0
     * @return: PageInfo<T>
     * @author: 杨永航
     * @date: 2021/6/23
     */
    Integer countByQuery(BaseQuery query);

    /**
     * 高级查询带分页
     *
     * @param query 查询条件
     * @version: 1.0
     * @return: PageInfo<T>
     * @author: 杨永航
     * @date: 2021/6/23
     */
    List<T> pageQuery(BaseQuery query);

    /**
     * 批量删除
     *
     * @param ids id集合
     * @version: 1.0
     * @return: void
     * @author: 杨永航
     * @date: 2021/6/23
     */
    Boolean deleteBatch(List<Long> ids);
    /**
     * 批量修改
     *
     * @param ids id集合
     * @version: 1.0
     * @return: void
     * @author: 杨永航
     * @date: 2021/6/23
     */
    Boolean updateBatch(List<Long> ids);
}
